﻿<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shCore.js"></script>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shBrushJScript.js"></script>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shBrushCSharp.js"></script>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shBrushXml.js"></script>
    <link type="text/css" rel="stylesheet" href="../../Content/highlighter/styles/shCore.css" />
    <link type="text/css" rel="stylesheet" href="../../Content/highlighter/styles/shCoreEclipse.css" />
    <script type="text/javascript">SyntaxHighlighter.all();</script>
</head>
<body>
    <h3>1.设置本地服务器</h3>
    <p>记住本地服务器IP与port<br/>
    本地服务器ip为:192.168.1.100<br />
    端口为：51687<br />
    其首页访问地址为：<br />
    http://debug.nfinal.com<br />
    因此要把：http://debug.nfinal.com 指向 192.168.1.100:51687<br />
    网页中所有的链接必须使用 http://debug.nfinal.com<br />
    </p>
    <pre class="brush:js;">
        {
          //调试设置
          "debug": {
            "enable": true,
            //这里必须使用外网连接
            "url": "http://debug.nfinal.com",
            "directory": "/Debug"
          },
          //项目类型
          "projectType": "Web",
          "server": {
            "url": "",
            "indexDocument": "/Index.html"
          }
        }
    </pre>
    <h3>2.设置路由器</h3>
    把路由器中的DMZ主机设置为：192.168.1.100<br/>
    并把192.168.1.100设置为固定IP地址<br />
    <h3>3.启动花生壳</h3>
    <p>
        1.点击端口映射<br />
        2.点击内网穿透<br />
        3.添加端口<br />
        4.自定义端口选择临时端口号<br />
        5.选择默认域名 myname.oicp.net<br />
        6.应用名称 debug<br />
        7.内网主机：192.168.1.100<br />
        8.内网端口：51687<br />
        9外网端口：临时端口号：14050<br />
    </p>
    <h3>4.设置反向代理</h3>
    <b>IIS上设置</b>
    <p>
        1.IIS上建立一个站点<br />
        2.域名为：http://debug.nfinal.com<br />
        3.安装Application Request Routing模块<br />
        4.启用代理设置。<br />
        5.urlRewrite配置<br />
        ^(.*)<br />
        {HTTP_HOST} ^debug.nfinal.com$<br />
        http://myname.oicp.net:14050<br />
        <i>这里也可以添加多个Url跳转，<br />
        不同的Url前缀跳转到本地不同的机器上，<br />
        那么不同模块的程序员，<br />
        就可以调试不同的内容</i>
    </p>
    <b>nginx上设置反向代理</b><br />
    反向代理，比正向代理多了一个X-Real-IP以及X-Forwarded-For，<br/>
    换句话说，就是正代理中请求包的IP是服务器的，<br/>
    面反向代理请求包中的IP是客户端的。<br/>
    <pre class="brush:js;">
        ## Basic reverse proxy server ##
        upstream apachephp  {
            server ip:8080; #Apache
        }

        ## Start www.nowamagic.net ##
        server {
            listen 80;
            server_name  www.nowamagic.net;

            access_log  logs/quancha.access.log  main;
            error_log  logs/quancha.error.log;
            root   html;
            index  index.html index.htm index.php;

            ## send request back to apache ##
            location / {
                proxy_pass  http://apachephp;

                #Proxy Settings
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                proxy_max_temp_file_size 0;
                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;
                proxy_buffer_size          4k;
                proxy_buffers              4 32k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 64k;
            }
        }

    </pre>
    <h3>5.正向代理设置（非必须）</h3>
    <p>
        有时候对方的服务器在接受请求时需要验证服务器的IP<br />
        这时我们本地发出的任何http请求服务器端都不会响应。<br />
        假如对方的服务器的域名为 http://api.server.com<br />
        这时就需要设置正向代理，但是IIS并不具有正向代理功能。<br />
        这时就需要借助nginx来完成设置。<br />
        <pre class="brush:js;">
        server {
            listen       80;
            resolver     114.114.114.114;
            location / {
                proxy_pass http://api.server.com$request_uri;
                root   html;
                index  index.html index.htm;
                proxy_set_header HOST $http_host;
                proxy_buffers 256 4k;
                proxy_max_temp_file_size 0k;
                proxy_connect_timeout 30;
                proxy_send_timeout 60;
                proxy_read_timeout 60;
                proxy_next_upstream error timeout invalid_header http_502;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        </pre>
        该nginx必须放置服务器上。
    </p>
    <h3>5.开启按F5启动Visual Studio调试功能</h3>
    <p>
        此种环境的搭建,可以使本地调试程序直接接收外网请求，<br />
        更有利于程序员的调试开发，加快程序开发效率。<br />
        另外可以采用ftp上传nfinal插件项目的dll文件以完成程序的发布。<br />
        这样可以提高发布的效率。<br />
    </p>
</body>
</html>